# config/intent_config.py

# 意图识别配置
INTENT_RECOGNITION_CONFIG = {
    # OpenAI API配置
    "openai_api_key": "sk-38b9daad5d5e46f690545046695bd6ff",
    "openai_base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
    "model_name": "qwen-max",
    "temperature": 0.1,
    
    # 意图识别阈值
    "confidence_threshold": 0.7,
    
    # 用户水平识别配置
    "history_window_size": 3,  # 考虑最近3条对话历史
    "level_detection_timeout": 10,  # 超时时间（秒）
    
    # 自适应权重配置
    "weight_fusion_method": "average",  # 权重融合方法: average, weighted, max
    "intent_weight": 0.6,  # 意图权重在融合中的比重
    "user_level_weight": 0.4,  # 用户水平权重在融合中的比重
}

# 意图类型配置
INTENT_TYPES_CONFIG = {
    "概念解释": {
        "description": "用户希望了解某个概念或术语的解释",
        "keywords": ["什么是", "解释", "概念", "定义", "含义", "说明"],
        "response_template": "这是一个关于{concept}的概念解释，适合{level}用户理解。",
        "weights": {"similarity": 0.5, "popularity": 0.1, "credibility": 0.4, "difficulty": 0.0}
    },
    "技术原理": {
        "description": "用户希望了解技术的工作原理或机制",
        "keywords": ["原理", "机制", "如何工作", "流程", "架构", "机制"],
        "response_template": "让我为您详细解释{technology}的技术原理，包括其工作机制和核心组件。",
        "weights": {"similarity": 0.4, "popularity": 0.1, "credibility": 0.4, "difficulty": 0.1}
    },
    "实践指导": {
        "description": "用户希望获得实践操作或实施的指导",
        "keywords": ["怎么做", "步骤", "实践", "实施", "操作", "实现"],
        "response_template": "以下是{task}的详细实施步骤和最佳实践建议。",
        "weights": {"similarity": 0.3, "popularity": 0.2, "credibility": 0.3, "difficulty": 0.2}
    },
    "问题解决": {
        "description": "用户遇到问题需要解决方案",
        "keywords": ["问题", "错误", "故障", "解决", "修复", "调试"],
        "response_template": "针对您遇到的{problem}问题，我提供以下解决方案和排查步骤。",
        "weights": {"similarity": 0.4, "popularity": 0.1, "credibility": 0.4, "difficulty": 0.1}
    },
    "比较分析": {
        "description": "用户希望比较不同技术或方法",
        "keywords": ["比较", "对比", "区别", "优劣", "选择", "差异"],
        "response_template": "让我为您详细比较{tech1}和{tech2}的异同点，帮助您做出选择。",
        "weights": {"similarity": 0.4, "popularity": 0.1, "credibility": 0.4, "difficulty": 0.1}
    },
    "最佳实践": {
        "description": "用户希望了解行业最佳实践或推荐方案",
        "keywords": ["最佳实践", "推荐", "标准", "规范", "建议", "指南"],
        "response_template": "以下是{domain}领域的最佳实践和推荐方案，基于行业标准和经验总结。",
        "weights": {"similarity": 0.3, "popularity": 0.3, "credibility": 0.3, "difficulty": 0.1}
    },
    "前沿技术": {
        "description": "用户关注最新技术发展或前沿趋势",
        "keywords": ["最新", "前沿", "趋势", "发展", "未来", "新兴"],
        "response_template": "让我为您介绍{technology}领域的最新发展和前沿趋势。",
        "weights": {"similarity": 0.3, "popularity": 0.4, "credibility": 0.2, "difficulty": 0.1}
    }
}

# 用户水平配置
USER_LEVELS_CONFIG = {
    "初学者": {
        "description": "对领域知识了解较少，需要基础概念解释和入门指导",
        "response_style": "详细解释，提供基础概念，使用简单易懂的语言",
        "content_preference": "基础概念、入门教程、简单示例",
        "prompt_template": "你是一个专业的技术助手，专门为初学者提供帮助。请使用简单易懂的语言，提供详细的概念解释，可以适当使用类比和例子。",
        "weights": {"similarity": 0.4, "popularity": 0.3, "credibility": 0.2, "difficulty": -0.1}
    },
    "进阶学习者": {
        "description": "有一定基础，希望深入学习特定技术或方法",
        "response_style": "深入分析，提供技术细节，包含实践建议",
        "content_preference": "技术原理、最佳实践、案例分析",
        "prompt_template": "你是一个专业的技术助手，专门为进阶学习者提供帮助。请提供深入的技术分析，包含实践建议和最佳实践。",
        "weights": {"similarity": 0.3, "popularity": 0.1, "credibility": 0.3, "difficulty": 0.3}
    },
    "专家级": {
        "description": "在领域内有丰富经验，关注前沿技术和复杂问题",
        "response_style": "专业深入，关注技术细节和前沿发展",
        "content_preference": "前沿技术、复杂问题解决方案、深度分析",
        "prompt_template": "你是一个专业的技术专家，专门为专家级用户提供深度技术分析。请关注技术细节和前沿发展，提供专业的技术见解。",
        "weights": {"similarity": 0.2, "popularity": 0.1, "credibility": 0.4, "difficulty": 0.3}
    }
}

# 自适应prompt模板配置
ADAPTIVE_PROMPT_TEMPLATES = {
    "初学者_概念解释": {
        "system_prompt": """你是一个专业的技术助手，专门为初学者提供帮助。

回答要求：
- 使用详细解释，提供基础概念，使用简单易懂的语言
- 提供清晰的概念解释
- 使用简单易懂的语言
- 可以适当使用类比和例子
- 避免过于技术性的术语

请基于以下知识库内容回答用户问题：""",
        "user_prompt_template": "用户问题: {query}\n\n请根据用户水平(初学者)和意图(概念解释)提供合适的回答。"
    },
    "专家级_技术原理": {
        "system_prompt": """你是一个专业的技术专家，专门为专家级用户提供深度技术分析。

回答要求：
- 使用专业深入，关注技术细节和前沿发展
- 深入分析技术原理
- 关注技术细节和实现机制
- 可以讨论前沿发展和优化方案
- 提供专业的技术见解

请基于以下知识库内容回答用户问题：""",
        "user_prompt_template": "用户问题: {query}\n\n请根据用户水平(专家级)和意图(技术原理)提供合适的回答。"
    },
    "default": {
        "system_prompt": """你是一个专业的技术助手，专门为用户提供帮助。

回答要求：
- 根据用户意图提供相应类型的回答
- 平衡技术深度和可理解性
- 提供实用的建议和指导

请基于以下知识库内容回答用户问题：""",
        "user_prompt_template": "用户问题: {query}\n\n请根据用户水平({user_level})和意图({intent_type})提供合适的回答。"
    }
} 